package vue;

import java.awt.Font;
import java.awt.GridLayout;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.util.ArrayList;

import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JTextField;

import modele.Album;

import controleur.ModifAlbumListener;
import controleur.RecuperateurImage;
/**
 * 
 * @author Plancq Charlotte, Lanvin Kévin, Darras Raphael
 *
 *
 */

public class AffichageModifAlbum extends JPanel {
	private static final long serialVersionUID = 1L;
	private JLabel lTitre, lEditeur, lAuteur, lGenre, lSerie, lSynopsis, lCommentaires, lNote, label , lImage;
	private JTextField tTitre, tEditeur, tAuteur, tSerie, tNote,tImage;
	private JButton modifier,parcourir;
	private JTextArea taCommentaires, taSynopsis;
	private JComboBox cGenre;
	private AffichageGlobal ag;
	private JPanel pTitre,pEditeur,pAuteur,pGenre,pSerie,pSynopsis,pNote,pCommentaires,pImage;

	public AffichageModifAlbum(AffichageGlobal p,Album a) {
		this.ag=p;
		setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
		
		label = new JLabel("Creation d'un album :");
		label.setFont(new Font("Arial", Font.BOLD, 26));
		label.setAlignmentX(CENTER_ALIGNMENT);
		add(label);
		
	
		pTitre = new JPanel();pTitre.setLayout(new GridLayout(1,2));
		lTitre = new JLabel("Titre : ");
		tTitre = new JTextField(20);tTitre.setText(a.getTitre());
		pTitre.add(lTitre); pTitre.add(tTitre);
		add(pTitre);
		
		add(Box.createVerticalStrut(ag.getHeight()/45));

		pEditeur = new JPanel();pEditeur.setLayout(new GridLayout(1, 2));
		lEditeur = new JLabel("Editeur : ");
		tEditeur = new JTextField(20);tEditeur.setText(a.getEditeur());
		pEditeur.add(lEditeur); pEditeur.add(tEditeur);
		add(pEditeur);
		
		add(Box.createVerticalStrut(ag.getHeight()/45));

		pAuteur = new JPanel();pAuteur.setLayout(new GridLayout(1,2));
		lAuteur = new JLabel("Auteur : ");
		tAuteur = new JTextField(20);tAuteur.setText(a.getAuteur());
		pAuteur.add(lAuteur); pAuteur.add(tAuteur);
		add(pAuteur);
		
		add(Box.createVerticalStrut(ag.getHeight()/45));

		pSerie = new JPanel();pSerie.setLayout(new GridLayout(1,2));
		lSerie = new JLabel("Serie : ");
		tSerie = new JTextField(20);tSerie.setText(a.getSerie());
		pSerie.add(lSerie); pSerie.add(tSerie);
		add(pSerie);

		add(Box.createVerticalStrut(ag.getHeight()/45));

		pGenre = new JPanel();pGenre.setLayout(new GridLayout(1,2));
		lGenre = new JLabel("Genre : ");
		cGenre = new JComboBox();
	
		ArrayList <String> genres=ag.getTraitement().getGenres();
		for(String it : genres)
			cGenre.addItem(it);
		cGenre.setSelectedItem(a.getGenre());
		pGenre.add(lGenre); pGenre.add(cGenre);
		add(pGenre);

		add(Box.createVerticalStrut(ag.getHeight()/45));

		pSynopsis = new JPanel();pSynopsis.setLayout(new GridLayout(1,2));
		lSynopsis = new JLabel("Synopsis : ");
		taSynopsis = new JTextArea();
		taSynopsis.setColumns(20);taSynopsis.setRows(3);
		taSynopsis.setLineWrap(true);
		taSynopsis.setText(a.getSynopsis());
		taSynopsis.invalidate();taSynopsis.validate();
		taSynopsis.addKeyListener(new KeyListener() {
			public void keyPressed(KeyEvent arg0) {
				if (arg0.getKeyCode()==KeyEvent.VK_TAB)
					tNote.grabFocus();
			}
			public void keyReleased(KeyEvent e) {}
			public void keyTyped(KeyEvent e) {}
		});
		pSynopsis.add(lSynopsis); pSynopsis.add (taSynopsis);
		add(pSynopsis);

		add(Box.createVerticalStrut(ag.getHeight()/45));

		pNote = new JPanel();pNote.setLayout(new GridLayout(1,2));
		lNote = new JLabel("Note : ");
		tNote = new JTextField(2);
		tNote.setText(""+a.getNote());
		pNote.add(lNote); pNote.add(tNote);
		add(pNote);
		
		add(Box.createVerticalStrut(ag.getHeight()/45));

		pCommentaires = new JPanel();pCommentaires.setLayout(new GridLayout(1,2));
		lCommentaires = new JLabel("Commentaires : ");
		taCommentaires = new JTextArea();
		taCommentaires.setColumns(20);taCommentaires.setRows(3);
		taCommentaires.setLineWrap(true);
		taCommentaires.setText(a.getCommentaire());
		taCommentaires.invalidate();taSynopsis.validate();		
		taCommentaires.addKeyListener(new KeyListener() {
			public void keyPressed(KeyEvent arg0) {
				if (arg0.getKeyCode()==KeyEvent.VK_TAB)
					tImage.grabFocus();
			}
			public void keyReleased(KeyEvent e) {}
			public void keyTyped(KeyEvent e) {}
		});
		pCommentaires.add(lCommentaires); pCommentaires.add(taCommentaires);
		add(pCommentaires);
		
		add(Box.createVerticalStrut(ag.getHeight()/45));
		
		pImage = new JPanel();pImage.setLayout(new GridLayout(1,3));
		lImage = new JLabel("Image de couverture : ");
		tImage= new JTextField(10);
		tImage.setText(a.getImage());
		parcourir=new JButton("Parcourir");parcourir.addActionListener(new RecuperateurImage(this));
		pImage.add(lImage);pImage.add(tImage);pImage.add(parcourir);
		add(pImage);
		
		add(Box.createVerticalStrut(ag.getHeight()/45));

		modifier = new JButton("Modifier l'album !");
		modifier.addActionListener(new ModifAlbumListener(p, this, a));
		add(modifier);
	}

	public String gettTitre() {
		return tTitre.getText();
	}

	public String gettEditeur() {
		return tEditeur.getText();
	}

	public String gettAuteur() {
		return tAuteur.getText();
	}

	public String gettSerie() {
		return tSerie.getText();
	}

	public String gettNote() {
		return tNote.getText();
	}

	public String getTaCommentaires() {
		return taCommentaires.getText();
	}

	public String getTaSynopsis() {
		return taSynopsis.getText();
	}

	public String getcGenre() {
		return (String)cGenre.getSelectedItem();
	}


	public String gettImage() {
		return tImage.getText();
	}

	public static long getSerialversionuid() {
		return serialVersionUID;
	}

	public JButton getCreer() {
		return modifier;
	}

	public AffichageGlobal getAg() {
		return ag;
	}

	public void setImage(String absolutePath) {
		this.tImage.setText(absolutePath);
	}

}
